//===================================================================
// 项目名 : Hbt.Cur
// 文件名 : HbtSecurityExtensions.cs
// 创建者 : Claude
// 创建时间: 2024-12-01 15:30
// 版本号 : V0.0.1
// 框架版本: .NET 8.0
// 描述   : 安全相关中间件扩展方法集合
//===================================================================

using Microsoft.AspNetCore.Builder;
using Hbt.Infrastructure.Middleware;

namespace Hbt.Infrastructure.Extensions;

/// <summary>
/// 安全相关中间件扩展方法集合
/// </summary>
/// <remarks>
/// 提供CSRF防护、限流、SQL注入防护、会话安全等安全中间件的扩展方法
/// </remarks>
public static class HbtSecurityExtensions
{
    #region CSRF防护

    /// <summary>
    /// 使用CSRF防护中间件
    /// </summary>
    /// <param name="app">应用程序构建器</param>
    /// <returns>应用程序构建器</returns>
    /// <remarks>
    /// 防止跨站请求伪造攻击，确保请求来自合法的源
    /// </remarks>
    public static IApplicationBuilder UseHbtCsrf(this IApplicationBuilder app)
    {
        return app.UseMiddleware<HbtCsrfMiddleware>();
    }

    #endregion

    #region 限流控制

    /// <summary>
    /// 使用限流中间件
    /// </summary>
    /// <param name="app">应用程序构建器</param>
    /// <returns>应用程序构建器</returns>
    /// <remarks>
    /// 控制请求频率，防止DoS攻击和资源滥用
    /// </remarks>
    public static IApplicationBuilder UseHbtRateLimit(this IApplicationBuilder app)
    {
        return app.UseMiddleware<HbtRateLimitMiddleware>();
    }

    #endregion

    #region SQL注入防护

    /// <summary>
    /// 使用SQL注入防护中间件
    /// </summary>
    /// <param name="app">应用程序构建器</param>
    /// <returns>应用程序构建器</returns>
    /// <remarks>
    /// 检测和阻止SQL注入攻击，保护数据库安全
    /// </remarks>
    public static IApplicationBuilder UseHbtSqlInjection(this IApplicationBuilder app)
    {
        return app.UseMiddleware<HbtSqlInjectionMiddleware>();
    }

    #endregion

    #region 会话安全

    /// <summary>
    /// 使用会话安全中间件
    /// </summary>
    /// <param name="app">应用程序构建器</param>
    /// <returns>应用程序构建器</returns>
    /// <remarks>
    /// 处理会话相关的安全机制，包括会话验证和安全管理
    /// </remarks>
    public static IApplicationBuilder UseHbtSessionSecurity(this IApplicationBuilder app)
    {
        return app.UseMiddleware<HbtSessionSecurityMiddleware>();
    }

    #endregion

    #region XSS防护

    /// <summary>
    /// 使用XSS防护中间件
    /// </summary>
    /// <param name="app">应用程序构建器</param>
    /// <returns>应用程序构建器</returns>
    /// <remarks>
    /// 检测和阻止跨站脚本攻击，设置安全响应头
    /// </remarks>
    public static IApplicationBuilder UseHbtXssProtection(this IApplicationBuilder app)
    {
        return app.UseMiddleware<HbtXssProtectionMiddleware>();
    }

    #endregion
}
